#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
    pid_t cpid = fork();
    if (cpid == 0)
    {
        int i = 10;
        while(i--)
        {
            printf("子进程执行: %d\n",i);
            sleep(1);
        }
        exit(10); 
    }
    int num = 0, x = 0;
    //  pid=(0 / <0)作用未知  status(int)  options
    //wait(NULL);
    //waitpid(cpid,&num,0);
    //
    //
    while(1)
    {
        x = waitpid(cpid,&num,WNOHANG);
        if (x == 0)
        {
            int j = 3;
            while(j--)
            printf("子进程未结束，父 : %d\n",j);
            sleep(1);
        }
        else if(x > 0)
        {
            printf("子进程结束， %d \n", x);
            return 0;
        }
    }
    //返回值：
    //  正常返回子进程id
    //  出错返回-1
    //  若调用WNOHANG waitpid没有发现结束的子进程返回0
    printf("cpid %d, status %d\n",x,num);
    //sleep(20);
    return 0;
}

